package com.mp.approvalreq.util;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

/**
 * Created by liuqi on 2018/6/21.
 */
public class MailUtils {
	private static final Logger logger = LoggerFactory.getLogger(MailUtils.class);
	
	
	public static final String EMAIL = "497019820@qq.com";
	
	public static void sendMail(String addressee, String title, String content)  {
		try {
		    logger.info("title:{}, content:{}", title, content);
			final Properties props = new Properties();
        /*
         * 可用的属性： mail.store.protocol / mail.transport.protocol / mail.host /
         * mail.user / mail.from
         */
			// 表示SMTP发送邮件，需要进行身份验证
			props.put("mail.smtp.auth", "true");
			props.put("mail.smtp.host", "smtp.163.com");
			// 发件人的账号
			props.put("mail.user", "plustechinfo@163.com");
			// 访问SMTP服务时需要提供的密码
			props.put("mail.password", "plustechinfo1411");
			
			// 配置连接超时,读超时,写超时
			props.setProperty("mail.smtp.connectiontimeout", "2000");
			props.setProperty("mail.smtp.timeout", "2000");
			props.setProperty("mail.smtp.writetimeout", "2000");
			
			// 构建授权信息，用于进行SMTP进行身份验证
			Authenticator authenticator = new Authenticator() {
				@Override
				protected PasswordAuthentication getPasswordAuthentication() {
					// 用户名、密码
					String userName = props.getProperty("mail.user");
					String password = props.getProperty("mail.password");
					return new PasswordAuthentication(userName, password);
				}
			};
			
			// 使用环境属性和授权信息，创建邮件会话
			Session mailSession = Session.getInstance(props, authenticator);
			
			// 创建邮件消息
			MimeMessage message = new MimeMessage(mailSession);
			
			// 设置发件人
			InternetAddress form = new InternetAddress(
					props.getProperty("mail.user"));
			message.setFrom(form);
			
			// 设置收件人
			InternetAddress to = new InternetAddress(addressee);
			message.setRecipient(Message.RecipientType.TO, to);
			
			// 设置邮件标题
			message.setSubject(title);
			
			// 设置邮件的内容体
			message.setContent(content, "text/html;charset=UTF-8");
			
			//设置未读状态
			message.setFlag(Flags.Flag.SEEN, false);
			
			// 发送邮件
			Transport.send(message);
			
		} catch (Throwable e) {
			logger.error("邮件发送错误");
			logger.error(e.getMessage(), e);
		}
		
	}
}
